<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd">
<html lang="zh-CN"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta http-equiv="Content-Language" content="zh-CN"><link href="stylesheet.css" media="all" rel="stylesheet" type="text/css">
<title>体系基本概念</title>
<script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?d286c55b63a3c54a1e43d10d4c203e75"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script>
</head><body class="SECT1">
<div>
<table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr><th colspan="5" align="center" valign="bottom">PostgreSQL 8.2.3 中文文档</th></tr>
<tr><td width="10%" align="left" valign="top"><a href="tutorial-install.html" accesskey="P">后退</a></td><td width="10%" align="left" valign="top"><a href="tutorial-start.html">快退</a></td><td width="60%" align="center" valign="bottom">章1. 从头开始</td><td width="10%" align="right" valign="top"><a href="tutorial-start.html">快进</a></td><td width="10%" align="right" valign="top"><a href="tutorial-createdb.html" accesskey="N">前进</a></td></tr>
</table>
<hr align="LEFT" width="100%"></div>
<div class="SECT1"><h1 class="SECT1"><a name="TUTORIAL-ARCH">1.2. 体系基本概念</a></h1>
<p>在我们开始讲解之前，我们应该先了解 PostgreSQL 系统的基本体系。理解 PostgreSQL 的组件之间的相互关系将会使本节显得更清晰一些。</p>
<p>按照数据库术语来说，PostgreSQL 使用一种客户端/服务器的模式。一次 PostgreSQL 会话由下列相关的进程(程序)组成：</p>
<ul>
<li><p>一个服务器进程，它管理数据库文件，接受来自客户端应用与数据库的连接，并且代表客户端在数据库上执行操作。数据库服务器程序叫 <tt class="FILENAME">postgres</tt> 。</p></li>
<li><p>那些需要执行数据库操作的用户的客户端(前端)应用。客户端应用可能本身就是多种多样的：它们可以是一个字符界面的工具，也可以是一个图形界面的应用，或者是一个通过访问数据库来显示网页的 web 服务器，或者是一个特殊的数据库管理工具。一些客户端应用是和 PostgreSQL 发布一起提供的，但绝大部分是用户开发的。</p></li>
</ul>
<p>和典型的客户端/服务器应用(C/S应用)一样，这些客户端和服务器可以在不同的主机上。这时它们通过 TCP/IP 网络连接通讯。你应该记住的是，在客户机上可以访问的文件未必能够在数据库服务器机器上访问(或者只能用不同的文件名进行访问)。</p>
<p>PostgreSQL 服务器可以处理来自客户端的多个并发请求。因此，它为每个请求启动("fork")一个新的进程。从这个时候开始，客户端和新服务器进程就不再经过最初的 <tt class="FILENAME">postgres</tt> 进程进行通讯。因此，主服务器总是在运行，等待连接，而客户端及其相关联的服务器进程则是起起停停。当然，用户是肯定看不到这些事情的。我们在这儿谈这些主要是为了完整。</p>
</div>
<div>
<hr align="LEFT" width="100%">
<table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr><td width="33%" align="left" valign="top"><a href="tutorial-install.html" accesskey="P">后退</a></td><td width="34%" align="center" valign="top"><a href="index.html" accesskey="H">首页</a></td><td width="33%" align="right" valign="top"><a href="tutorial-createdb.html" accesskey="N">前进</a></td></tr>
<tr><td width="33%" align="left" valign="top">安装</td><td width="34%" align="center" valign="top"><a href="tutorial-start.html" accesskey="U">上一级</a></td><td width="33%" align="right" valign="top">创建一个数据库</td></tr>
</table>
</div>
</body></html>